package cn.dodgeball.java;

import cn.dodgeball.util.Const;
import cn.dodgeball.util.PClass;
import sun.security.provider.ParameterCache;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Set extends JPanel implements ActionListener {
    private Font setFont = new Font("宋体", Font.BOLD, 40);
    private int centerX = (Const.FRAME_WIDTH - Const.LARGEBUTTON_WIDTH) / 2;
    private String type = "";    // 调用者面板

    public Set() {
        this.init();
    }

    public void init() {
        // 容器设置
        setSize(Const.FRAME_WIDTH, Const.FRAME_HEIGHT);
        setLayout(null);
        setOpaque(false);
        setVisible(false); // 初始不可见

        // 方块颜色
        setSquareColor();
        // 方块大小
        setSquareSize();
        // 小球数量
        setBallNumber();
        // 小球大小
        setBallRadius();

        // '保存设置'按钮
        GameButton saveButton = new GameButton("保存设置", centerX, 600, false); //创建按钮
        saveButton.addActionListener(this);
        this.add(saveButton);   // 添加按钮
    }


    public void setting(String type) {
        this.type = type;
        this.setVisible(true);       // 显示设置面板
        if (type == "facePanel")
            PClass.facePanel.setVisible(false); // 隐藏按钮面板
        else if (type == "gamePanel")
            PClass.gamePanel.setVisible(false);           // 隐藏游戏面板
    }

    // 设置方块颜色
    private void setSquareColor() {
        // 容器
        JPanel squareColorPanel = new JPanel(null);
        squareColorPanel.setBounds(505, 60, 270, 80);
        squareColorPanel.setOpaque(false);
        // 设置文字
        JLabel colorText = new JLabel("方块颜色");
        colorText.setFont(Const.SETFONT);
        colorText.setForeground(Color.yellow);
        colorText.setBounds(10, 10, 200, 60);
        squareColorPanel.add(colorText);
        // 颜色选择器
        JButton colorButton = new JButton();
        colorButton.setBackground(Const.squareColor);
        colorButton.setBounds(195, 10, 60, 60);
        colorButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Color color = JColorChooser.showDialog(squareColorPanel, "方块颜色", Const.squareColor);
                Const.squareColor = color;
                colorButton.setBackground(Const.squareColor);
                System.out.print("设置方块颜色\n");
            }
        });
        squareColorPanel.add(colorButton);
        this.add(squareColorPanel);
    }

    private void setSquareSize() {
        // 容器
        SetSlider squareSize = new SetSlider("方块大小", Const.squareRadius, Const.MIN_RADIUS_OF_SQUARE, Const.MAX_RADIUS_OF_SQUARE, 180);
        this.add(squareSize);
    }

    private void setBallNumber() {
        // 容器
        SetSlider squareSize = new SetSlider("小球数量", Const.ballAccount, Const.MIN_NUMBER_OF_BALL, Const.MAX_NUMBER_OF_BALL, 320);
        this.add(squareSize);
    }

    private void setBallRadius() {
        // 容器
        SetSlider squareSize = new SetSlider("小球大小", Const.ballRadius, Const.MIN_RADIUS_OF_BALL, Const.MAX_RADIUS_OF_BALL, 460);
        this.add(squareSize);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("保存设置")) {
            System.out.print("保存设置\n");

            System.out.print("方块大小" + Const.squareRadius + '\n');
            System.out.print("小球数量" + Const.ballAccount + '\n');
            System.out.print("小球大小" + Const.ballRadius + '\n');
            PClass.ballPanel.clear();               // 清理小球
            PClass.ballPanel.init();                // 初始化小球面板
            this.setVisible(false);                 // 隐藏设置面板
            if (type == "facePanel")
                PClass.facePanel.setVisible(true);  // 打开按钮面板
            else if (type == "gamePanel")
                PClass.gamePanel.setVisible(true);  // 打开游戏面板
        }
    }
}
